package com.eastfair.home.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.home.dto.BoothAcceptanceRecordDTO;
import com.eastfair.home.dto.BoothAcceptanceRecordQuery;
import com.eastfair.home.entity.BoothAcceptanceRecord;
import com.eastfair.home.entity.SupervisionItemManagement;
import com.eastfair.home.enumeration.BoothAcceptanceRecordAcceptanceTypeEnum;
import com.eastfair.home.vo.BoothAcceptanceDetailVO;
import com.eastfair.home.vo.BoothAcceptanceRecordVO;
import com.eastfair.venuebooking.vo.SpaceVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 展台验收记录
 * </p>
 *
 * @author linan
 * @date 2022-11-29
 */
public interface BoothAcceptanceRecordService extends SuperService<BoothAcceptanceRecord> {
    List<SpaceVO> getPassSpace(BoothAcceptanceRecordDTO dto);

    /**
     * do转vo
     *
     * @param model
     */
    BoothAcceptanceRecordVO doToVo(BoothAcceptanceRecord model);

    /**
     * do转vo
     *
     * @param modelList
     */
    List<BoothAcceptanceRecordVO> doToVos(List<BoothAcceptanceRecord> modelList);


    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<BoothAcceptanceRecord> list(BoothAcceptanceRecordDTO modelDTO, List<Long> ids);

    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<BoothAcceptanceRecord> listOfCache(BoothAcceptanceRecordDTO modelDTO, List<Long> ids);

    /**
     * 查询展台验收记录
     *
     * @param query
     * @return
     */
    List<BoothAcceptanceRecordVO> getBoothAcceptanceRecord(BoothAcceptanceRecordQuery query);

    /**
     * 保存验收申请
     * @param boothAcceptanceRecordDTO
     * @return
     */
    BoothAcceptanceRecord saveAcceptance(BoothAcceptanceRecordDTO boothAcceptanceRecordDTO);

    /**
     * 查询展台验收明细
     * @param query query
     * @return BoothAcceptanceRecordVO
     */
    BoothAcceptanceRecordVO getBoothAcceptanceDetail(BoothAcceptanceRecordQuery query);

    /**
     * 保存展台验收明细
     * @param dto
     * @return
     */
    Boolean saveBoothAcceptanceDetail(BoothAcceptanceRecordDTO dto);

    /**
     * 作废主场-展会下的所有验收记录
     * @param supervisionItemManagement
     * @param acceptanceTypeEnum
     */
    void removeByExhibitionManage(SupervisionItemManagement supervisionItemManagement, String acceptanceTypeEnum);
}
